home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 126-150 / disk_130 / hp / hp_modes.include < prev    next >
Text File  |  1992-05-06  |  5KB  |  178 lines

  1. /*-------------------------------------------*/
  2. /*                                           */
  3. /*    Filename:  hp_modes.include            */
  4. /*                                           */
  5. /*    Contains C source code for routines    */
  6. /*    CheckModes, SetAngleMode, SetBase      */
  7. /*    and SetValidKeys, which are used by    */
  8. /*           the routine hp.c                */
  9. /*                                           */
  10. /*-------------------------------------------*/
  11.  
  12. CheckModes()
  13. {
  14.   mode_changed = FALSE;
  15.  
  16.   if ( (inkey >= 19) && (inkey <= 24) )    {
  17.     if ( inkey == 19 ) SetBase( BINARY  );
  18.     if ( inkey == 20 ) SetBase( OCTAL   );
  19.     if ( inkey == 21 ) SetBase( DECIMAL );
  20.     if ( inkey == 22 ) SetBase( HEX     );
  21.     if ( inkey == 23 ) SetBase( FLOAT   );
  22.     if ( inkey == 24 ) SetBase( COMPLEX );
  23.     SetValidKeys();                        }
  24.                                                 
  25.   if ( (inkey >= 25) && (inkey <= 27) )          {
  26.     if ( inkey == 25 ) SetAngleMode( DEGREES  );
  27.     if ( inkey == 26 ) SetAngleMode( RADIANS  );
  28.     if ( inkey == 27 ) SetAngleMode( GRADIANS );
  29.     mode_changed = TRUE;                         }
  30. }
  31. /*--------------------------------------------------------*/
  32. SetAngleMode( a )
  33. int a;
  34.  
  35. { int k1color, k2color, k3color;
  36.   angmode = a;
  37.  
  38.   k1color = 2;
  39.   k2color = 2;
  40.   k3color = 2;
  41.  
  42.   if ( a == DEGREES  ) {  k1color = 3;
  43.                           angfac  = PI / 180.0; }
  44.   if ( a == RADIANS  ) {  k2color = 3;
  45.                           angfac  = 1.0;        }
  46.                       
  47.   if ( a == GRADIANS ) {  k3color = 3;
  48.                           angfac  = PI / 200.0; }
  49.  
  50.   ymin = 107;
  51.   xmin =  46;
  52.   SetAPen( rp, k1color );
  53.   DrawKey();
  54.   xmin = 102;
  55.   SetAPen( rp, k2color );
  56.   DrawKey();
  57.   xmin = 158;
  58.   SetAPen( rp, k3color );
  59.   DrawKey();
  60.  
  61.   SetDrMd( rp, JAM1 );
  62.   Move( rp, STARTX, 114 );
  63.   SetAPen( rp, TAN );
  64.   Text( rp, "deg    rad    grd", 17 );
  65.  
  66.   Move( rp, STARTX, 114 );
  67.   SetAPen( rp, BLACK );
  68.   if ( a == DEGREES  ) Text( rp, "deg              ", 17);
  69.   if ( a == RADIANS  ) Text( rp, "       rad       ", 17);
  70.   if ( a == GRADIANS ) Text( rp, "              grd", 17);
  71.  
  72.   SetDrMd( rp, JAM2 );
  73.  
  74. }
  75. /*-------------------------------------------------------------------*/
  76. SetBase( b )
  77. int b;
  78.  
  79. { int oldbase;
  80.  
  81.   if ( b == base ) return(0);
  82.   mode_changed = TRUE;
  83.  
  84.   ymin = 90;
  85.   xmin = x_field[ base ] - 6;
  86.   SetAPen( rp, BLACK );
  87.   DrawKey();
  88.   Move( rp, x_field[ base ], 97 );
  89.   SetDrMd( rp, JAM1 );
  90.   SetAPen( rp, TAN  );
  91.   Text( rp, x_text[ base ], 3 );
  92.  
  93.   /*  If we've switched to or from integer mode, clear both stacks */
  94.   if ( ((base-2)*(b-2)) < 0 ) {
  95.      entry_in_progress = FALSE;
  96.      x  = 0.0;
  97.      y  = 0.0;
  98.      z  = 0.0;
  99.      t  = 0.0;
  100.      ix =   0;
  101.      iy =   0;
  102.      iz =   0;
  103.      it =   0; }
  104.  
  105.   oldbase = base;
  106.   base = b;
  107.   xmin = x_field[ base ] - 6;
  108.   SetAPen( rp, YELLOW );
  109.   DrawKey();
  110.   Move( rp, x_field[ base ], 97 );
  111.   SetAPen( rp, BLACK );
  112.   Text( rp, x_text[ base ], 3 );
  113.   SetDrMd( rp, JAM2 );
  114.  
  115.   /* Between float and complex, no need to redraw the display */
  116.   if ( (oldbase < 2) && (base < 2) ) return(0);
  117.  
  118.   /*  Erases display  */
  119.   DrawDisplay();
  120.  
  121.   base = oldbase;
  122.   if ( (base > 1) && (b > 1) )       {
  123.     if ( entry_in_progress )      {
  124.          entry_in_progress = FALSE;
  125.          PushX();                 }  }
  126.   base = b;
  127.  
  128.   if ( base < BINARY )
  129.     DisplayFloatXY();
  130.   else
  131.     DisplayIntXY();
  132.  
  133. }
  134. /*--------------------------------------------------------*/
  135. SetValidKeys()
  136. { int i;
  137.  
  138.    for( i =  1; i <= 12; i++ ) key_valid[i] = TRUE;
  139.    for( i = 13; i <= 18; i++ ) key_valid[i] = FALSE;
  140.    for( i = 28; i <= 45; i++ ) key_valid[i] = TRUE;
  141.    key_valid[50] = TRUE;
  142.    key_valid[54] = TRUE;
  143.  
  144.    if ( base < 2 ) return(0);
  145.  
  146.    for( i = 13; i <= 18; i++ ) key_valid[i] = TRUE;
  147.  
  148.    key_valid[28] = FALSE;
  149.    key_valid[29] = FALSE;
  150.    key_valid[30] = FALSE;
  151.    key_valid[33] = FALSE;
  152.    key_valid[34] = FALSE;
  153.    key_valid[35] = FALSE;
  154.    key_valid[36] = FALSE;
  155.    key_valid[43] = FALSE;
  156.    key_valid[44] = FALSE;
  157.    key_valid[45] = FALSE;
  158.    key_valid[50] = FALSE;
  159.    key_valid[54] = FALSE;
  160.  
  161.    if ( base < 16 ) {
  162.      for( i = 13; i <= 18; i++) key_valid[i] = FALSE; }
  163.  
  164.    if ( base < 10 ) {
  165.      key_valid[2] = FALSE;
  166.      key_valid[3] = FALSE; }
  167.  
  168.    if (base <  8 ) {
  169.      key_valid[ 1] = FALSE;
  170.      key_valid[ 5] = FALSE;
  171.      key_valid[ 6] = FALSE;
  172.      key_valid[ 7] = FALSE;
  173.      key_valid[10] = FALSE;
  174.      key_valid[11] = FALSE; }
  175.  
  176. }
  177. /*--------------------------------------------------------*/
  178.